/*
 * ChatAdmin.h
 *
 *  Created on: Dec 2, 2013
 *      Author: gonprieto
 */

#ifndef CHATADMIN_H_
#define CHATADMIN_H_

#include "../communication/SocketProtocoloPlano.h"
#include "../message_queue/QueueProtocoloPlano.h"
#include "../communication/Mensajes/MensajeConAutorYPid.h"
#include "../communication/Mensajes/MensajeAgregarUsuario.h"
#include "../communication/Mensajes/MensajeRemoverUsuario.h"
class Chat_Admin {
public:
	Chat_Admin();
	virtual ~Chat_Admin();

	int handshake(unsigned int id,std::string& nombreChat);

	/*
	 * Devuelve TRUE si pudo registrar el nuevo cliente
	 */
	bool registrarNuevoCliente(MensajeAgregarUsuario* messageAddUser);

	/*
	 * Devuelve TRUE si pudo desregistrar el cliente
	 */
	bool unregistrarCliente(MensajeRemoverUsuario* messageRemover);

	void enviarMensaje(MensajeConAutorYPid* msg);


	void obtenerListadoChats(unsigned int id);

	bool chatExiste(std::string userName);
	std::string clienteExiste(unsigned int id);
private:
	void mensajeAChat(std::string nombreChat,unsigned int omitir,MensajeConAutorYPid* msg);
	void enviarMensajeAGrupo(MensajeConAutorYPid* msg,std::string chat);



	std::map<unsigned int,std::string > chats;

	QueueProtocoloPlano queue;

protected:


};

#endif /* CHATADMIN_H_ */
